In inter-process communication schemes, there are generally at least two processes that are independent from each other, i.e., each process can not be affected by the other process and the data for each process is generally not shared with the other processes. Since processes could be independent, in order to exchange data they must implement a mechanism that allows them to send data and information back and forth. One mechanism that may be used is a shared memory model. In a shared memory model, a region of memory may be shared by cooperating processes that communicate with each other by writing and reading messages from the shared memory area. In a shared memory model, a process can be configured to continuously pull messages from the shared memory, or in other situations, it can be configured to only process messages once it has received an interrupt directing it to process any messages in the shared memory. In the first situation, the performance of the computer system can be severe due to the fact that the processor will be continuously utilizing computer cycles to poll the shared memory instead of using them for other activities. Since it is, generally speaking, impractical to continuously check a shared memory location for messages a process sends a signal, or an interrupt, to the other process notifying it that there is a message to process. As stated above, when the receiver is actively polling the shared memory location, an interrupt is not necessary because the receiver will process messages, however when a process is not checking the shared memory location an interrupt is needed in order to direct it to process messages. Sending an interrupt typically requires a control switch to the operating system kernel, or a privileged process. In lightly loaded systems, the CPU cost of sending and taking interrupts may be low, and performance of the system may not be impacted. However, when the load on the system is moderate to high, the cost of taking interrupts may severely impact the performance of the system, especially if a control switch is required to process the message. Similarly, virtual machines running on a virtual machine monitor (VMM) may need to pass messages from one machine to another via inter-partition communication schemes. Two virtual machines may also share a memory location to send messages, and the cost of sending and servicing interrupts in a moderately to highly loaded system, such as a virtualization server, may impact the performance of the system. In virtualized systems an interrupt can be sent by a VMM, also known as a privileged process.